package entity

import (
	"shqsoft.cn/pasnj/base"
	//"strconv"
	"time"

	"github.com/jinzhu/gorm"
)

//对私贷款认定分户情况
type IndiAccoDiviPl struct {
	ID          int        `gorm:"AUTO_INCREMENT;primary_key;column:ID"`
	DSDT        *time.Time `gorm:"column:DSDT";type:date` //日期
	ACNO        string     `gorm:"column:ACNO"`
	BANO        string     `gorm:"column:BANO"`
	CANO        string     `gorm:"column:CANO"`
	KHMC        string     `gorm:"column:KHMC"`  //客户名称
	ZJHM        string     `gorm:"column:ZJHM"`  //证件号码
	KHJL1       string     `gorm:"column:KHJL1"` //客户经理1
	ZB1         int        `gorm:"column:ZB1"`   //占比1
	KHJL2       string     `gorm:"column:KHJL2"` //客户经理2
	ZB2         *int       `gorm:"column:ZB2"`   //占比2
	KHJL3       string     `gorm:"column:KHJL3"` //客户经理3
	ZB3         *int       `gorm:"column:ZB3";`  //占比3
	KHJL4       string     `gorm:"column:KHJL4"` //客户经理4
	ZB4         *int       `gorm:"column:ZB4";`  //占比4
	DRJG        string     `gorm:"column:DRJG"`  //导入结果
	ISTZ        string     `gorm:"column:ISTZ"`  //批量处理方式
	ISTZCaption string     `gorm:"-"`
}

//TableName 对私贷款认定分户情况
func (IndiAccoDiviPl) TableName() string {
	return "T_INDI_CXPLRD"
}
func (pl *IndiAccoDiviPl) AfterFind() (err error) {
	if pl.ISTZ == "0" {
		pl.ISTZCaption = "批量处理未分配的储蓄客户"
	} else if pl.ISTZ == "1" {
		pl.ISTZCaption = "批量调整已分配的储蓄客户"
	}
	return
}

//导入时验证导入的占比是否为100%
func indiAccoAfterValidation(index int, rowdatas []string) []base.ErrorData {
	//	var ZB1 float64
	//	var ZB2 float64
	//	var ZB3 float64
	//	var ZB4 float64
	//	ZB1, _ = strconv.ParseFloat(rowdatas[3], 64)
	//	if rowdatas[5] == "" {
	//		ZB2 = 0
	//	} else {
	//		ZB2, _ = strconv.ParseFloat(rowdatas[5], 64)
	//	}
	//	if rowdatas[7] == "" {
	//		ZB3 = 0
	//	} else {
	//		ZB3, _ = strconv.ParseFloat(rowdatas[7], 64)
	//	}
	//	if rowdatas[9] == "" {
	//		ZB4 = 0
	//	} else {
	//		ZB4, _ = strconv.ParseFloat(rowdatas[9], 64)
	//	}
	//	ZB1 += ZB2 + ZB3 + ZB4
	//	if ZB1 != 100 {
	//		errInfos := make([]base.ErrorInfo, 1, 1)
	//		errDatas := make([]base.ErrorData, 1, 1)
	//		errinfo := base.ErrorInfo{
	//			ColIndex: 3,
	//			Message:  "分配占比总额不等于100%",
	//		}
	//		errInfos[0] = errinfo
	//		errData := base.ErrorData{
	//			RowIndex:   index,
	//			DataValues: rowdatas,
	//			ErrorInfos: errInfos,
	//		}
	//		errDatas[0] = errData
	//		return errDatas
	//	}
	return nil
}

//导入后执行分户处理
func indiAccoAfterImport(tx *gorm.DB, params map[string]string) (err error) {
	ISTZ := params["ISTZ"]
	if ISTZ == "0" {
		tx.Exec("exec UP_INDI_DIVI_PL_CL")
	} else if ISTZ == "1" {
		tx.Exec("exec UP_INDI_DIVI_PL_TZ")
	}
	return nil
}

func IndiAccoDiviPlEF() base.EntityFunc {
	return func() interface{} {
		entity := IndiAccoDiviPl{}
		return &entity
	}
}
func IndiAccoDiviPlESF() base.EntitiesFunc {
	return func() interface{} {
		var entities []IndiAccoDiviPl
		return &entities
	}
}

func init() {
	base.DaoPoolObj.Put("IndiAccoDiviPl", base.NewDefaultDao(IndiAccoDiviPlEF(), IndiAccoDiviPlESF(), nil))
	base.SetValidationCallBack("indiAccopl", indiAccoAfterValidation)
	base.SetAfterCallBack("indiAccopl", indiAccoAfterImport)
}
